package com.lvmama.rhino.service;

import java.util.List;

import com.lvmama.rhino.entity.CommonStatisticsSqlVO;
import com.lvmama.rhino.entity.DeviceStatisticsSqlVO;
import com.lvmama.rhino.entity.NettypeStatisticsSqlVO;
import com.lvmama.rhino.entity.RegionStatisticsSqlVO;
import com.lvmama.rhino.entity.StatisticsSqlVO;
import com.lvmama.rhino.pojo.CodeNode;
import com.lvmama.rhino.pojo.CommonStatisticsResult;
import com.lvmama.rhino.pojo.DeviceStatisticsResult;
import com.lvmama.rhino.pojo.FlowStatisticsResult;
import com.lvmama.rhino.pojo.NettypeStatisticsResult;
import com.lvmama.rhino.pojo.RegionStatisticsResult;
import com.lvmama.rhino.pojo.TreeNodeView;

public interface TreeStatisticsService {

    /**
     * 
    * @Title: QueryAllTreeNodeView 
    * @Description: 查询所有的树状图节点
    * @param @return    设定文件 
    * @return List<TreeNodeView>    返回类型 
    * @throws
     */
    List<TreeNodeView> QueryAllTreeNodeView();
    
    /**
     * 
    * @Title: QueryAllCodeNode 
    * @Description: 查询所有的code码
    * @param @return    设定文件 
    * @return List<TreeNodeView>    返回类型 
    * @throws
     */
    List<CodeNode> QueryAllCodeNode();

    /**
     * 
    * @Title: insertTreeNodeView 
    * @Description: 插入数据库表结构
    * @param @param cn    设定文件 
    * @return void    返回类型 
    * @throws
     */
    void insertTreeNodeView(TreeNodeView treeNodeView);
    
    /**
     * 
    * @Title: deleteTreeNodeView 
    * @Description: 删除节点及其子节点
    * @param @param cn    设定文件 
    * @return void    返回类型 
    * @throws
     */
    void deleteTreeNodeView(TreeNodeView treeNodeView);
    
    List<String> QueryDataByNode();
    
    List<FlowStatisticsResult> QueryFlowSticsResByNode(StatisticsSqlVO ss);
    
    /**
     * 
    * @Title: QueryFSConversion 
    * @Description: 查询流量转化率表，显示节点的百分比和统计值
    * @param @param ss
    * @return List<FlowStatisticsResult>    返回类型 
    * @throws
     */
    List<FlowStatisticsResult> QueryFSConversion(StatisticsSqlVO ss);
    
    /**
     * 
    * @Title: QueryDeviceFS 
    * @Description: 节点流量包中的设备属性数据
    * @param @param ss
    * @return List<DeviceStatisticsResult>    返回类型 
    * @throws
     */
    List<DeviceStatisticsResult> QueryDeviceFS(DeviceStatisticsSqlVO ss);
    
    /**
     * 
    * @Title: QueryNettypeFS 
    * @Description: 节点流量包中的网络运营商统计
    * @param @param ss
    * @return List<NettypeStatisticsResult>    返回类型 
    * @throws
     */
    List<NettypeStatisticsResult> QueryNettypeFS(NettypeStatisticsSqlVO ss);
    
    /**
     * 
    * @Title: QueryRegionFS 
    * @Description: 节点流量包中的省份流量统计
    * @param @param ss
    * @return List<RegionStatisticsResult>    返回类型 
    * @throws
     */
    List<RegionStatisticsResult> QueryRegionFS(RegionStatisticsSqlVO ss);
    
    List<CommonStatisticsResult> QueryCommonFS(CommonStatisticsSqlVO ss);
}
